#include <iostream>

using namespace std;

//左移运算符重载作用: 可以输出自定义数据类型
class Person {
public:
    int a;
    int b;
    //通过成员函数重载左移运算符
    //本质形式p.operator<<(cout) 简化形式p<<cout
    //不会利用成员函数重载<<运算符，因为无法实现 cout 在左侧
//    void operator<<(cout){
//
//    }
};

//通过全局函数重载左移运算符
//本质形式operator<<(cout,p) 简化形式cout<<p
ostream &operator<<(ostream &cout, Person &p) {
    cout << "person:a=" << p.a << ",b=" << p.b;
    return cout;
}

void test1() {
    Person p;
    p.a = 10;
    p.b = 20;
    cout << p << endl;
}

int main() {
    test1();
    return 0;
}
